php:留言板 第十八天
主要任务留言板编写
留言板开发过程中的用到的编程:
64位的加密:
$title=base64_encode($title);
64位的解密:
$title=base64_dencode($title);
数据分割:
explode('.',$str);
php文件内容操作函数:
fopen(); 打开文件
fread(); 读取文件多少个字符
fgets(); 获得一行数据
feof(); 判断光标是否到结尾
fputs() 和 fwrite($f,$data);将数据$data写入$f文件中
fclose($f); 关闭文件$f.
file_get_contents() 函数把整个文件读入一个字符串中
file_put_contents() 函数把一个字符串写入文件中
file_exists(); 判断文件是否存在
is_file() 判断是否是文件
is_dir() 判断是否是目录
php对文件夹的操作
创建文件 mkdir('tmp')
删除文件夹 rmdir()
判断是否是一个文件夹 is_dir('/tmp') true/false
获取文件所在的文件夹 dirname("/tmp/test/a.php") ==> /tmp/test
获取文件的文件名 basename('/tmp/test/a.php') ==> a.php
文件上传
提交数据:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
//这个数据提交表单为文件或者图片等
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="file" name="Filedata" value=""> //name关系对应
<input type="submit">
</form>
</body>
</html>
数据处理:
<?php
var_dump($_FILES);
//$str= explode('.',$_FILES['Filedata']['tmp_name']);
$file=$_FILES['Filedata'];//FILES中的文件灿在数组
move_uploaded_file($file['tmp_name'],'file/'.time().'_'.$file['name']);
//以文件原名保存到file文件中
//copy($_FILES['Filedata']['tmp_name'],'file/a.jpg');
//move_uploaded_file 与copy相同的作用
//sleep(20);
//name 、tmp_file、type、filesize、error
?>
根目录设计
根目录展示页面:
留言板注册界面
信息提交代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
<link rel="stylesheet" type="text/css" href="css/1.css">
</head>
<body>
<div class=box>
<div class=top>
<h1>注册</h1>
</div>
<form action="reg.php" method="post">
<input type="text" name="username" placeholder="手机/邮箱/用户名">
<br>
<input type="password" name="password1" placeholder="密码">
<br>
<input type="password" name="password2" placeholder="确认密码">
<br>
<input class="login" type="submit" name="submit" value="注册">
</form>
</div>
</body>
</html>
处理信息代码:
<?php
//通过session验证两次密码输入是否正确
session_start();
$_SESSION['passwd1']=$_POST['password1'];
$_SESSION['passwd2']=$_POST['password2'];
if($_SESSION['passwd1']==$_SESSION['passwd2']){
$username=base64_encode($_POST['username']);
$password=base64_encode($_POST['password1']);
$data="$username||$password\n";
$f=fopen('data/users.db','a');
fwrite($f,$data);
fclose($f);
echo "<script>alert('注册完成');location.href='login.html';</script>";
}else{
echo "<script>alert('两次密码不对');location.href='reg.html';</script>";
}
?>
留言板登录界面
登录信息提交:
<!DOCTYPE html>
<html>
<head>
<title>登录表单</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css/1.css">
</head>
<body>
<div class=box>
<div class=top>
<h1>登录</h1>
</div>
<form action="login.php" method="post">
<input type="text" name="username" placeholder="手机/邮箱/用户名">
<br>
<input type="password" name="password" placeholder="密码">
<br>
<input class="input_code" type="text" name="verifycode" placeholder="验证码">
<img class="verifycode" src="https://passport.360.cn/captcha.php?m=create&app=i360&scene=login&userip=&level=default&sign=8820a4&r=1564540365&border=none&_=1564540365972">
<br>
<a class="getpass" href="getpass.php">忘记密码</a>
<br>
<input class="login" type="submit" name="submit" value="登录">
</form>
</div>
</body>
</html>
登录数据处理:
<?php
session_start();
$_SESSION['uname']=($_POST['username']);
$username=($_POST['username']);
$password=($_POST['password']);
$date=date('Y-m-d H:i:s',time());
$ip=getLocalIP();
$dat="$username||$password||$date||$ip\n";
$f=fopen('data/users.db','r');
$islogin=false;
while(!feof($f)){
$tmp=fgets($f);
$data=explode('||',$tmp);
if($username==base64_decode($data[0]) && $password==base64_decode($data[1])){
$m=fopen('data/sigindata.db','a');
fwrite($m,$dat);
fclose($m);
echo "<script>alert('登录成功');location.href='edit_news.html';</script>";
$islogin=true;
}
}
if(!$islogin){
echo "<script>alert('登录失败');location.href='login.html';</script>";
}
function getLocalIP() {
$preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";
//获取操作系统为win2000/xp、win7的本机IP真实地址
exec("ipconfig", $out, $stats);
if (!empty($out)) {
foreach ($out AS $row) {
if (strstr($row, "IP") && strstr($row, ":") && !strstr($row, "IPv6")) {
$tmpIp = explode(":", $row);
if (preg_match($preg, trim($tmpIp[1]))) {
return trim($tmpIp[1]);
}
}
}
}
}
?>
留言板编辑界面
提交数据:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>news 编辑</title>
<style type="text/css">
input{
height: 50px;
width: 150px;
}
name{
height: 250px;
width: 300px;
}
</style>
</head>
<body>
<center>
<form action="add_news.php" method="post">
<p>序号</p>
<input type="text" name="num" value="" placeholder="序号">
<p>热度</p>
<input type="text" name="hot" value="" placeholder="热度">
<p>标题</p>
<input type="text" name="title" value="" placeholder="标题">
<p>文本域</p>
<textarea name="text">
</textarea>
<p>作者</p>
<input type="text" name="author" value="" placeholder="作者">
<p>图片</p>
<input type="text" name="img">
<p>提交</p>
<input type="submit">
</form>
</center>
</body>
</html>
数据处理:
<?php
session_start();
if (!isset($_SESSION['uname'])) {
echo "<script>alert('请登录账户');location.href='login.html';</script>";
die();
}
$num=base64_encode($_POST['num']);
$hot=base64_encode($_POST['hot']);
$title=base64_encode($_POST['title']);
$text=base64_encode($_POST['text']);
$author=base64_encode($_POST['author']);
$date=time();
$img=base64_encode($_POST['img']);
$data="{$num}||{$hot}||{$title}||{$text}||{$author}||{$date}||{$img}"."\n";
$f=fopen("data/news.db","a");
fwrite($f,$data);
fclose($f);
echo "<script>alert('添加完成');location.href='index.php';</script>";
?>
留言板展示界面
页面展示代码:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
table {
width: 80%;
}
th {
width: 300px;
text-align: center;
height: 50px;
}
td {
height: 30px;
width: 300px;
text-align: center;
}
img {
/*width: 250px;*/
height: 100px;
}
</style>
</head>
<body>
<center>
<br>
<h1>新闻社</h1>
<hr>
<table>
<tr>
<th>序号</th>
<th>热度</th>
<th>标题</th>
<th>作者</th>
<th>发表时间</th>
<th>操作</th>
</tr>
<?php
$f=fopen('data/news.db','r');
$i=1;
while(!feof($f)){
$tmp=fgets($f);
$data=explode('||',$tmp);
if(count($data) !=7){
continue;
}
echo_table($data);
if($i<3){
echo_info($data);
}
$i++;
}
?>
</table>
<hr>
<br>
<br>
<h3>版权所有</h3>
<h3>2019 ICQ 意见反馈 京ICP证03173号 京公网安备110000012931号</h3>
<br>
</center>
</body>
</html>
<?php
function echo_info($data){
$content = substr(base64_decode($data[3]),0,300);
$img_url=base64_decode(($data[6]));
echo <<<eof
<tr>
<td><img src="$img_url"></td>
<td colspan="4">{$content }</td>
</tr>
eof;
}
function echo_table($data){
$num=base64_decode($data[0]);
$hot = base64_decode($data[1]);
$author = base64_decode($data[4]);
$add_date=date('Y-m-d',$data[5]);
$title=base64_decode($data[2]);
echo <<<EOF
<tr>
<td>{$num}</td>
<td>{$hot}</td>
<td>{$title}</td>
<td>{$author}</td>
<td>{$add_date}</td>
</tr>
EOF;
}
?>
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com
文章标题:php:留言板 第十八天
本文作者:弈少
发布时间:2019-08-09, 18:30:14
最后更新:2019-08-10, 10:58:20
原始链接:http://yoursite.com/2019/08/09/北京渗透测试第十八天 20190808/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。